<?php
!defined('P_W') && exit('Forbidden');

/**
 * 图片服务类
 * @author bingbing.renbb@2010-8-25
 *
 */
class PW_SecondimageService {
	var $_imageDB;
	/**
	 * 构造函数
	 */
	function PW_SecondimageService() {
		$this->__construct();
	}
	
	function __construct() {
		$this->_imageDB = $this->_getImageDB();
	}
	
	/**
	 * 新增多张图片
	 * @param	array	$data	各字段的值，字段名为键名。
	 * @return	integer			插入的行数
	 */
	function addMulti($data) {
		return $this->_imageDB->addImages($data);
	}
	
	/**
	 * 新增一张图片
	 * @param	array	$data	各字段的值，字段名为键名。
	 * @return	integer			插入的ID
	 */
	function addSingle($data) {
		return $this->_imageDB->addImage($data);
	}
	
	/**
	 * 更新图片
	 * @param	integer	$id 	要更新的图片ID
	 * @param	array  $data	新的数据信息
	 * @return  integer 		影响的行数
	 */
	function update($id, $data) {
		return $this->_imageDB->updateImage($id, $data);
	}
	
	/**
	 * 删除一张图片
	 * @param	mixed	$id 	要删除的图片ID
	 */
	function delete($id) {
		global $attachdir;
		$image = $this->_imageDB->getImageById($id);
		if(empty($image)) return false;
		$this->_deletImage($image);
		$this->_imageDB->deleteImage($id);
	}
	
	/**
	 * 删除多张图片
	 * @param	mixed	$ids	要删除的图片ID
	 */
	function deletes($ids) {
		foreach ($ids as $key => $value) {
			$this->delete($value);
		}
	}
	
	/**
	 * 根据houseid和type来删除图片
	 * @param integer $houseid
	 * @param string $imageType
	 */
	function deleteByHidAndType($houseid, $imageType) {
		global $attachdir;
		$type = $imageType == 'sale' ? 0 : 1;
		if (!is_numeric($houseid)) return false;
		$images = $this->_imageDB->getImagesByHidAndType($houseid, $type);
		if(empty($images)) return NULL;
		$ids = array();
		foreach ($images as $key => $value) {
			$this->_deletImage($value);
			$ids[] = $value[imageid];
		}
		$this->_imageDB->deleteImages($ids);
	}
	
	/**
	 * 根据多个houseid和type来删除图片
	 * @param array $houseids
	 * @param string $imageType
	 */
	function deleteByHidsAndType($houseids, $imageType) {
		global $attachdir;
		$type = $imageType == 'sale' ? 0 : 1;
		is_numeric($houseids) && $houseids = array($houseids);
		if (!is_array($houseids)) return false;
		$images = $this->_imageDB->getImagesByHidsAndType($houseids, $type);
		if(empty($images)) return NULL;
		$ids = array();
		foreach ($images as $key => $value) {
			$this->_deletImage($value);
			$ids[] = $value[imageid];
		}
		$this->_imageDB->deleteImages($ids);
	}
	
	/**
	 * 根据图片类型取得图片
	 * @param	integer	$type	图片类型
	 * @param	integer	$page	分页中的第几页
	 * @return	array			查询结果 
	 */
	function get($type, $page) {
		$type = $type == 'sale' ? 0 : 1;
		return $this->_imageDB->getImages($type, $page);
	}
	
	/**
	 * 取得所有图片
	 * @param	integer	$page	分页中的第几页
	 * @return	array			查询结果 
	 */
	function getAll($page) {
		return $this->_imageDB->getAllImages($page);
	}
	
	/**
	 * 根据图片id取得图片
	 * @param	integer	$id	图片的ID
	 * @return	array		查询结果 
	 */
	function getById($id) {
		return $this->_imageDB->getImageById($id);
	}
	
	/**
	 * 根据房子id跟类型取得图片
	 * @param	integer	$id	图片的ID
	 * @return	array		查询结果 
	 */
	function getByHouseId($houseid, $imageType) {
		if (!is_numeric($houseid)) return false;
		$type = $imageType == 'sale' ? 0 : 1;
		$attachs =  $this->_imageDB->getImagesByHidAndType($houseid, $type);
		$attachs = $this->_buildAttach($attachs);
		return $attachs;
	}
	
	function getTopImages($houseid, $imageType, $number) {
		if (!is_numeric($number) || !is_numeric($houseid)) return false;
		$type = $imageType == 'sale' ? 0 : 1;
		$attachs =  $this->_imageDB->getTopImages($houseid, $type, $number);
		$attachs = $this->_buildAttach($attachs);
		return $attachs;
	}
	
	/**
	 * 统计所有图片数目
	 * @return	integer	记录数 
	 */
	function count() {
		return $this->_imageDB->count();
	}
	
	/**
	 * 根据类型统计图片数目
	 * @param	string	$type	图片类型
	 * @return	integer				记录数 
	 */
	function countByType($type) {
		$type = $type == 'sale' ? 0 : 1;
		return $this->_imageDB->countByType($type);
	}
	
	/**
	 * 统计一个房子的图片数目
	 * @param	$integer	$houseid  房子id
	 * @param	string  	$type   房子类型
	 * @return	integer				记录数 
	 */
	function countByHouseid($houseid, $type) {
		$type = $type == 'sale' ? 0 : 1;
		return $this->_imageDB->countByHouseid($houseid, $type);
	}
	
	function uploadUpdate($data, $type) {
		require_once M_P . 'lib/upload/imageupload.class.php';
		$upload = new ImageUpload($type);
		$upload->update($data);
	}
	
	/**
	 * 载入图片DAO类
	 * @return object 图片DAO对象
	 */
	function _getImageDB() {
		return House::loadDB('house_secondimage');
	}
	
	/**
	 * 删除硬盘中的图片
	 * @param array $image
	 */
	function _deletImage($image) {
		global $attachdir;
		if (!is_array($image)) return false;
		$tempPath = str_replace('salepic/', 'salethumbpic/', $image['path']);
		$thumbPath = $attachdir . '/' . $tempPath;
		is_file($attachdir . '/' . $image['path']) && P_unlink($attachdir . '/' . $image['path']);
		is_file($thumbPath) && P_unlink($thumbPath);	
	}
	
	function _buildAttach($attachs) {
		$result = array();
		foreach ($attachs as $key => $value) {
			$value['path'] = $this->_getImageUrl($value['path']);
			$result[$value['imageid']] = $value;
		}
		$result = $result ? $result : array();
		return $result;
	}
	
	function _getImageUrl($path) {
		$temp = geturl($path);
		return $temp[0];
	}
}
?>